Conversation
…tim ferries PR #19 surfaced a scope gap in PR #76's docs/research/2026-*-amara-*.md carve-out: gemini-deep-think + action-mode verbatim ferry files have the same MD027/MD032 violations on Amara-style verbatim-quote blocks but use non-Amara source names. Extends pattern to docs/research/2026-*-*.md — covers any ferry source landing as a date-prefixed absorb file. Repo convention: 2026-MM-DD-<source-or-topic>-*.md = verbatim absorbs (carry §33 archive headers + "## Verbatim preservation" sections); non-date-prefixed names + date-SUFFIXED names = author-controlled research docs that stay linted. Trade-off documented in the comment block: a non-ferry doc accidentally landing with date-prefix shape would skip lint. Cost is small (markdown-only) vs the cost of churning verbatim courier-protocol content per Otto-227. Unblocks PR #19 (gemini-deep-think + action-mode verbatim). PR #21 + PR #24 still pending CI; PR #23 was a separate transient GitHub releases CDN 502 on bun-1.3.13 download — needs rerun not config fix per Aaron 2026-04-28 transient-CI-external-infra discipline. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Updates markdownlint’s ignore configuration to treat all date-prefixed docs/research/2026-*-*.md files as verbatim “ferry/absorb” artifacts (not just Amara-sourced ones), unblocking markdownlint failures for non-Amara research ferries.
Changes:
- Broadens the ignore glob from
docs/research/2026-*-amara-*.mdtodocs/research/2026-*-*.md. - Expands the accompanying rationale comment to document the date-prefix discriminator and trade-offs.
| // verbatim courier-protocol absorbs; they carry "## Verbatim | ||
| // preservation" sections + GOVERNANCE §33 archive headers | ||
| // (Scope / Attribution / Operational status: research-grade / | ||
| // Non-fusion disclaimer). Author-controlled research docs use | ||
| // non-date-prefixed names (e.g. `actor-model-*.md`, | ||
| // `agent-cadence-log.md`) or date-SUFFIXED names (e.g. | ||
| // `aaron-knative-...-2026-04-21.md`) — date-prefix vs | ||
| // date-suffix is the discriminator. |
There was a problem hiding this comment.
The comment says date-prefixed docs/research/ absorbs “carry "## Verbatim preservation" sections”, but a repo-wide search shows no Verbatim preservation heading/text under docs/research/** (it exists under docs/aurora/**). This makes the rationale misleading; consider rewording to point at the actual invariant these files share (e.g., the GOVERNANCE §33 boundary header/frontmatter + verbatim blocks), rather than a section title that doesn’t exist here.
| // verbatim courier-protocol absorbs; they carry "## Verbatim | |
| // preservation" sections + GOVERNANCE §33 archive headers | |
| // (Scope / Attribution / Operational status: research-grade / | |
| // Non-fusion disclaimer). Author-controlled research docs use | |
| // non-date-prefixed names (e.g. `actor-model-*.md`, | |
| // `agent-cadence-log.md`) or date-SUFFIXED names (e.g. | |
| // `aaron-knative-...-2026-04-21.md`) — date-prefix vs | |
| // date-suffix is the discriminator. | |
| // verbatim courier-protocol absorbs; they carry the | |
| // GOVERNANCE §33 archive boundary/frontmatter | |
| // (Scope / Attribution / Operational status: research-grade / | |
| // Non-fusion disclaimer) plus verbatim preserved blocks. | |
| // Author-controlled research docs use non-date-prefixed names | |
| // (e.g. `actor-model-*.md`, `agent-cadence-log.md`) or | |
| // date-SUFFIXED names (e.g. `aaron-knative-...-2026-04-21.md`) | |
| // — date-prefix vs date-suffix is the discriminator. |
| // date-prefix shape would skip lint; the cost of that miss is | ||
| // small (research docs are markdown only) compared to the | ||
| // cost of churning verbatim ferry content. | ||
| "docs/research/2026-*-*.md" |
There was a problem hiding this comment.
The ignore glob docs/research/2026-*-*.md is broader than the documented “2026-MM-DD-... date-PREFIX” discriminator: it will also match filenames like 2026-04-topic.md (year-month) if any are added later. To keep the carve-out scoped to full dates as intended, use a pattern that encodes the day as well (e.g., 2026-??-??-*.md or an equivalent digit-class glob supported by markdownlint-cli2).
| "docs/research/2026-*-*.md" | |
| "docs/research/2026-??-??-*.md" |
| // Verbatim-ferry preservation under `docs/research/` for any | ||
| // ferry source (Amara, Gemini, Grok, Codex, Aaron-quoted, etc.) | ||
| // landing as a date-stamped absorb file. Original carve-out was | ||
| // `docs/research/2026-*-amara-*.md` which only covered Amara | ||
| // ferries; PR #19 (gemini-deep-think + action-mode verbatim | ||
| // Aaron-quote files) exposed the Amara-only scoping as too | ||
| // narrow. |
There was a problem hiding this comment.
This new comment block introduces personal-name attribution on a current-state config surface (e.g., “Aaron-quoted”, “Aaron-quote files”). Repo guidance is to use role references outside the history-surface paths (see docs/AGENT-BEST-PRACTICES.md:284-325). Consider rewriting these references to role-refs (e.g., “human-maintainer-quoted”) to stay consistent with that convention.
…26-04-28) (#80) Three structural fixes for the PR #23 mise+bun-1.3.13 502 transient class, addressing Aaron 2026-04-28 directives: "is there not a way to fix this?" (don't default to rerun) "we want to use stock and we better not be using that old version of ubuntu" "can you cache and retry?" "we want to make sure dev seutp and build machine setup are as close to the same a possible" "why not cache the whole install/setup" 1. **Comprehensive install cache** on lint-shell, lint-workflows, lint-markdown jobs (previously uncached). Caches everything tools/setup/install.sh writes: ~/.local/bin/mise (the mise binary) ~/.local/share/mise (mise runtimes — bun/dotnet/python/uv/java) ~/.cache/mise (mise download cache) ~/.dotnet/tools (dotnet global tools) ~/.elan (Lean toolchain) ~/.config/zeta (managed shellenv) tools/tla, tools/alloy (verifier jars) Cache key hashes BOTH .mise.toml AND tools/setup/** so install logic changes invalidate cache → vanilla install path gets re-tested whenever discipline changes. 2. **Retry layer** on the install step (CI-only — dev runs stay interactive). Three attempts with 10s/30s backoff. Mise's internal 3-attempt retry was exhausted on PR #23's bun download; wrapping at the install.sh layer catches the case where mise itself gives up. Same shape across all 3 lint jobs. 3. **Ubuntu 24.04 bump** on every workflow that pinned ubuntu-22.04 (gate.yml lint jobs ×6, resume-diff.yml, scorecard.yml, memory-index-duplicate-lint.yml, budget-snapshot-cadence.yml). ubuntu-latest = ubuntu-24.04 since Jan 2025 per Otto-247 WebSearch verification; 22.04 is now LTS-2 stale. Stays on stock GitHub- hosted runner image (no custom pre-installed bun) per Aaron's "we want to use stock" + "vanilla ubuntu so we test do our install scripts work on vanalla and deve machines." Dev↔CI parity: install.sh runs on both surfaces; cache restores state similar to a dev's already-bootstrapped local env; cache key on tools/setup/** + .mise.toml matches what a dev's environment depends on. install.sh stays idempotent so cache hit = fast no-op, cache miss = full vanilla install (which is the install-script validation Aaron wants). Composes with PR #75 curl_fetch helper (downstream curl retries), PR #76 + #79 markdownlint carve-outs (verbatim ferry preservation), Otto-247 version-currency, Otto-235 4-shell portability, Otto-341 mechanism-over-vigilance, and `feedback_structural_fix_beats_process_discipline_velocity_multiplier_aaron_2026_04_28.md`. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* ci: comprehensive install cache + retry + ubuntu-24.04 bump (Aaron 2026-04-28) Three structural fixes for the PR #23 mise+bun-1.3.13 502 transient class, addressing Aaron 2026-04-28 directives: "is there not a way to fix this?" (don't default to rerun) "we want to use stock and we better not be using that old version of ubuntu" "can you cache and retry?" "we want to make sure dev seutp and build machine setup are as close to the same a possible" "why not cache the whole install/setup" 1. **Comprehensive install cache** on lint-shell, lint-workflows, lint-markdown jobs (previously uncached). Caches everything tools/setup/install.sh writes: ~/.local/bin/mise (the mise binary) ~/.local/share/mise (mise runtimes — bun/dotnet/python/uv/java) ~/.cache/mise (mise download cache) ~/.dotnet/tools (dotnet global tools) ~/.elan (Lean toolchain) ~/.config/zeta (managed shellenv) tools/tla, tools/alloy (verifier jars) Cache key hashes BOTH .mise.toml AND tools/setup/** so install logic changes invalidate cache → vanilla install path gets re-tested whenever discipline changes. 2. **Retry layer** on the install step (CI-only — dev runs stay interactive). Three attempts with 10s/30s backoff. Mise's internal 3-attempt retry was exhausted on PR #23's bun download; wrapping at the install.sh layer catches the case where mise itself gives up. Same shape across all 3 lint jobs. 3. **Ubuntu 24.04 bump** on every workflow that pinned ubuntu-22.04 (gate.yml lint jobs ×6, resume-diff.yml, scorecard.yml, memory-index-duplicate-lint.yml, budget-snapshot-cadence.yml). ubuntu-latest = ubuntu-24.04 since Jan 2025 per Otto-247 WebSearch verification; 22.04 is now LTS-2 stale. Stays on stock GitHub- hosted runner image (no custom pre-installed bun) per Aaron's "we want to use stock" + "vanilla ubuntu so we test do our install scripts work on vanalla and deve machines." Dev↔CI parity: install.sh runs on both surfaces; cache restores state similar to a dev's already-bootstrapped local env; cache key on tools/setup/** + .mise.toml matches what a dev's environment depends on. install.sh stays idempotent so cache hit = fast no-op, cache miss = full vanilla install (which is the install-script validation Aaron wants). Composes with PR #75 curl_fetch helper (downstream curl retries), PR #76 + #79 markdownlint carve-outs (verbatim ferry preservation), Otto-247 version-currency, Otto-235 4-shell portability, Otto-341 mechanism-over-vigilance, and `feedback_structural_fix_beats_process_discipline_velocity_multiplier_aaron_2026_04_28.md`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ci: bump install retry from 3 to 5 attempts with 10s/30s/60s/120s backoff (Aaron 2026-04-28) --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…+ retry 3→5 (Aaron 2026-04-28) (Lucent-Financial-Group#700) * ci: comprehensive install cache + retry + ubuntu-24.04 bump (Aaron 2026-04-28) (#80) Three structural fixes for the PR #23 mise+bun-1.3.13 502 transient class, addressing Aaron 2026-04-28 directives: "is there not a way to fix this?" (don't default to rerun) "we want to use stock and we better not be using that old version of ubuntu" "can you cache and retry?" "we want to make sure dev seutp and build machine setup are as close to the same a possible" "why not cache the whole install/setup" 1. **Comprehensive install cache** on lint-shell, lint-workflows, lint-markdown jobs (previously uncached). Caches everything tools/setup/install.sh writes: ~/.local/bin/mise (the mise binary) ~/.local/share/mise (mise runtimes — bun/dotnet/python/uv/java) ~/.cache/mise (mise download cache) ~/.dotnet/tools (dotnet global tools) ~/.elan (Lean toolchain) ~/.config/zeta (managed shellenv) tools/tla, tools/alloy (verifier jars) Cache key hashes BOTH .mise.toml AND tools/setup/** so install logic changes invalidate cache → vanilla install path gets re-tested whenever discipline changes. 2. **Retry layer** on the install step (CI-only — dev runs stay interactive). Three attempts with 10s/30s backoff. Mise's internal 3-attempt retry was exhausted on PR #23's bun download; wrapping at the install.sh layer catches the case where mise itself gives up. Same shape across all 3 lint jobs. 3. **Ubuntu 24.04 bump** on every workflow that pinned ubuntu-22.04 (gate.yml lint jobs ×6, resume-diff.yml, scorecard.yml, memory-index-duplicate-lint.yml, budget-snapshot-cadence.yml). ubuntu-latest = ubuntu-24.04 since Jan 2025 per Otto-247 WebSearch verification; 22.04 is now LTS-2 stale. Stays on stock GitHub- hosted runner image (no custom pre-installed bun) per Aaron's "we want to use stock" + "vanilla ubuntu so we test do our install scripts work on vanalla and deve machines." Dev↔CI parity: install.sh runs on both surfaces; cache restores state similar to a dev's already-bootstrapped local env; cache key on tools/setup/** + .mise.toml matches what a dev's environment depends on. install.sh stays idempotent so cache hit = fast no-op, cache miss = full vanilla install (which is the install-script validation Aaron wants). Composes with PR #75 curl_fetch helper (downstream curl retries), PR #76 + #79 markdownlint carve-outs (verbatim ferry preservation), Otto-247 version-currency, Otto-235 4-shell portability, Otto-341 mechanism-over-vigilance, and `feedback_structural_fix_beats_process_discipline_velocity_multiplier_aaron_2026_04_28.md`. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> * ci: bump install retry from 3 to 5 attempts (Aaron 2026-04-28) (#81) * ci: comprehensive install cache + retry + ubuntu-24.04 bump (Aaron 2026-04-28) Three structural fixes for the PR #23 mise+bun-1.3.13 502 transient class, addressing Aaron 2026-04-28 directives: "is there not a way to fix this?" (don't default to rerun) "we want to use stock and we better not be using that old version of ubuntu" "can you cache and retry?" "we want to make sure dev seutp and build machine setup are as close to the same a possible" "why not cache the whole install/setup" 1. **Comprehensive install cache** on lint-shell, lint-workflows, lint-markdown jobs (previously uncached). Caches everything tools/setup/install.sh writes: ~/.local/bin/mise (the mise binary) ~/.local/share/mise (mise runtimes — bun/dotnet/python/uv/java) ~/.cache/mise (mise download cache) ~/.dotnet/tools (dotnet global tools) ~/.elan (Lean toolchain) ~/.config/zeta (managed shellenv) tools/tla, tools/alloy (verifier jars) Cache key hashes BOTH .mise.toml AND tools/setup/** so install logic changes invalidate cache → vanilla install path gets re-tested whenever discipline changes. 2. **Retry layer** on the install step (CI-only — dev runs stay interactive). Three attempts with 10s/30s backoff. Mise's internal 3-attempt retry was exhausted on PR #23's bun download; wrapping at the install.sh layer catches the case where mise itself gives up. Same shape across all 3 lint jobs. 3. **Ubuntu 24.04 bump** on every workflow that pinned ubuntu-22.04 (gate.yml lint jobs ×6, resume-diff.yml, scorecard.yml, memory-index-duplicate-lint.yml, budget-snapshot-cadence.yml). ubuntu-latest = ubuntu-24.04 since Jan 2025 per Otto-247 WebSearch verification; 22.04 is now LTS-2 stale. Stays on stock GitHub- hosted runner image (no custom pre-installed bun) per Aaron's "we want to use stock" + "vanilla ubuntu so we test do our install scripts work on vanalla and deve machines." Dev↔CI parity: install.sh runs on both surfaces; cache restores state similar to a dev's already-bootstrapped local env; cache key on tools/setup/** + .mise.toml matches what a dev's environment depends on. install.sh stays idempotent so cache hit = fast no-op, cache miss = full vanilla install (which is the install-script validation Aaron wants). Composes with PR #75 curl_fetch helper (downstream curl retries), PR #76 + #79 markdownlint carve-outs (verbatim ferry preservation), Otto-247 version-currency, Otto-235 4-shell portability, Otto-341 mechanism-over-vigilance, and `feedback_structural_fix_beats_process_discipline_velocity_multiplier_aaron_2026_04_28.md`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ci: bump install retry from 3 to 5 attempts with 10s/30s/60s/120s backoff (Aaron 2026-04-28) --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> * ci: address PR Lucent-Financial-Group#700 Copilot threads + Otto-357 no-directives correction (5 fixes) Five fixes in gate.yml addressing Copilot review threads + the human maintainer's reinforcement of Otto-357 (no-directives framing): ## 1. Otto-357 no-directives framing (4 spots) The human maintainer's catch: "the only directive is there is no directive". Per Otto-357 + the no-directives rule in CLAUDE.md, framing the maintainer's input as "directive" makes Otto a follower- of-orders rather than an accountable autonomous peer. Replaced 4 occurrences of "the human maintainer's directive" / "Aaron 2026-04-28 directive" with "the human maintainer's input" / "the human maintainer's 2026-04-28 input" / "dev-CI parity input" / etc. ## 2. Aaron→role-ref attribution (Otto-279 thread) Per Otto-279 / the named-agent attribution rule, current-state surfaces (workflows count) use role-refs ("the human maintainer") not first-name attribution. Converted in the comments I introduced or just edited; pre-existing Aaron-named comments left as-is for scope hygiene. ## 3. Comprehensive install cache: drop tools/tla + tools/alloy The cache key only hashed `.mise.toml + tools/setup/** + global.json`, but the cache PATHS included `tools/tla` and `tools/alloy` — which contain tracked source (e.g., `tools/alloy/AlloyRunner.java`, first-party Java) AND are already cached by the dedicated "Cache verifier jars (TLC + Alloy)" step earlier in the workflow. Caching them in the comprehensive cache caused (a) double-cache races and (b) cache-hit-but-stale on tracked-source edits (the cache key wouldn't bust). Drop those paths; rely on the dedicated verifier- jars cache for them. ## 4. Typo cleanup in directive-quote comments "dev seutp" → "dev setup", "as close to the same a possible" → "as close to the same as possible". Tension with verbatim-quote substrate resolved by paraphrasing in the comment (the quoted form is preserved in memory files; workflow comments are current-state, prefer readable). ## 5. PR description over-claim — Setup Python step The PR description claimed "Setup Python + Install Semgrep (lint job)". Investigation showed the lint (semgrep) job uses the install.sh-based pattern (no actions/setup-python) per the host-portability invariant. The Setup Python addition from AceHack #80 did NOT survive the cherry-pick because LFG-side already moved to install.sh-based semgrep. PR description will be corrected separately. The cache + retry are the real substantive forward-sync content. Retry-wrapper duplication suggestion (Copilot thread #3) noted as a follow-up improvement candidate in-comment; not addressed in this PR to keep scope tight. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Summary
Extends the
docs/research/2026-*-amara-*.mdignore pattern (added in PR #76) todocs/research/2026-*-*.md— covering any ferry source (Amara, Gemini, Grok, Codex, Aaron-quoted, etc.) landing as a date-prefixed verbatim absorb.Why
PR #76 unblocked 6 stale PRs but PR #19 still failed on:
docs/research/2026-04-26-gemini-deep-think-agencysignature-commit-attribution-convention-validation-and-refinement.md(Gemini ferry)docs/research/2026-04-26-action-mode-classification-correction-and-self-provenance-accountability-framing.md(Aaron + Otto + Gemini verbatim quotes)Both files have GOVERNANCE §33 archive headers (
Operational status: research-grade) and verbatim-quote sections — same class as Amara ferries, just different source names. The Amara-only scoping was too narrow.Repo convention encoded
2026-MM-DD-<source-or-topic>-*.md(date PREFIX) → verbatim absorb → covered<topic>-...-2026-MM-DD.md(date SUFFIX) → author-controlled → still lintedThe discriminator is date-position, not source name.
Note on PR #23
PR #23 (amara-ferry-12) failed today on a separate transient GitHub releases CDN 502 downloading bun-1.3.13 (mise install step, NOT markdownlint). Per
feedback_transient_ci_external_infra_only_test_failures_are_bugs_not_flakes_2026_04_28.md: external-infra failures get reruns, not config fixes. Will rerun #23 after this PR lands.Test plan
🤖 Generated with Claude Code